/*
 * KooiAdmin.cc
 *
 *  Created on: Sep 9, 2011
 *      Author: walter
 */

#include "KooiAdmin.h"

KooiAdmin* KooiAdmin::pinstance = 0;//init pointer
KooiAdmin* KooiAdmin::instance() {
	if (pinstance == 0) { // eerste aanroep?
		pinstance = new KooiAdmin();
		// solo instance aanmaken
	}
	return pinstance; // address van solo instance
}
KooiAdmin::KooiAdmin() {
	//... perform necessary instance initializations
	kooien = new map<string, Kooi*> ;
}

KooiAdmin::~KooiAdmin(){
assert(pinstance!=0);
	pinstance = 0;
	kooien->erase(kooien->begin(),kooien->end());
	delete kooien;
}


KooiAdmin* KooiAdmin::getInstance(){
	return pinstance;
}

map<string, Kooi*>* KooiAdmin::getKooien() {
	return kooien;
}

void KooiAdmin::drukKooienInhoudAf() {
	//dieren algemene lijst leeg gooien
	for (map<string, Kooi *>::iterator iter = kooien->begin(); iter != kooien->end(); ++iter) {
		iter->second->drukAf();
	}
}

Kooi* KooiAdmin::getKooi(string dierSoort){
	map<string, Kooi*>::iterator it = kooien->find(dierSoort);

	if (it == kooien->end()) {
		cout << "Kooi niet gevonden, bezig met nieuwe kooi aanmaken" << endl;

		Kooi* kooi = new Kooi(dierSoort);

		kooien->insert(pair<string, Kooi*> (dierSoort, kooi));

		return kooi;

	} else {
		cout << "kooi gevonden"<< endl;
		return it->second;
	}
}

void KooiAdmin::maakKooi(string waarde){
	map<string, Kooi*>::iterator it = kooien->find(waarde);

	if (it == kooien->end()) {
		cout << "Kooi niet gevonden, bezig met nieuwe kooi aanmaken" << endl;

		Kooi* kooi = new Kooi(waarde);

		kooien->insert(pair<string, Kooi*> (waarde, kooi));

	} else {
		cout << "Kooi bestaat al" <<endl;
	}

}
void KooiAdmin::verwijderKooi(string waarde){
	map<string, Kooi*>::iterator it = kooien->find(waarde);

	if (it == kooien->end()) {
		cout << "geen kooi gevonden om te verwijderen" << endl;
	} else {
		cout << "kooi wordt verwijderd"<< endl;
		kooien->erase(it);
		delete it->second;
	}
}


